|
Микропроцессоры
и цифровая обработка сигналов |
||
|
Курсовая
работа |
||
Задание на курсовую работу в формате DOC Microsoft Word
ЗАДАНИЕ НА
КУРСОВУЮ РАБОТУ
ПО КУРСУ «МИКРОПРОЦЕССОРЫ И ЦИФРОВАЯ ОБРАБОТКА
СИГНАЛОВ»
Разработать микропроцессорное устройство на основе микроконтроллера AduC842.
Содержание работы:
1. Ведение
2. Аналитический обзор микропроцессоров
3. Разработка структурной схемы устройства
4. Разработка принципиальной электрической схемы устройства с описанием назначения каждого элемента.
5. Разработка программного обеспечения устройства. (Схема алгоритма, программа на языке С. При написании программы обязательно использовать комментарии в каждой строке, описывающие производимые действия).
6. Заключение
7. Список литературы.
Номер темы работы выбрать в соответствии с последней цифрой пароля студента.
Темы курсовой работы по курсу МП и ЦОС
1. Разработать цифровой термометр на основе датчика температуры DS18B20.
2. Разработать цифровой вольтметр. В качестве АЦП использовать встроенный АЦП микропроцессора ADuC842.
3. Разработать программно регулируемый источник напряжения на основе ЦАП микропроцессора ADuC842.
4. Разработать микропроцессорную систему поддержания заданной температуры воздуха на основе датчика температуры DS18B20.
5. Разработать однотональный электромузакальный инструмент на основе микропроцессора ADuC842.
6. Разработать устройство управления елочной гирляндой.
7. Разработать импульсный телефонный номеронабиратель.
8. Разработать калькулятор, выполняющий операции сложения, вычитания, умножения и деления.
9. Разработать цифровые часы.
10. Разработать генератор пилообразного напряжения.
Методические указания для курсового проектирования
Пример1: Разработать устройство, состоящее из микроконтроллера и подключенного к нему светодиода. Светодиод должен мигать 1 раз в секунду.

Рисунок 1. Схема устройства.
Описание схемы.
Основным элементом схемы является микроконтроллер AduC842. К нулевому разряду параллельного порта P0 подключен светодиод через резистор, ограничивающий ток светодиода. Анод светодиода подключен к источнику питания. При установке на выходе порта уровня напряжения, соответствующего логическому нулю (потенциала, близкого к нулю) светодиод будет гореть. Ток протекает от + источника питания, через светодиод к нулю. Если на выходе порта логическая единица (около +5 В), на светодиоде разность потенциалов близка к 0 и он не светится. Схема включения микроконтроллера типовая. Ко входу RESET подключена схема сброса микроконтроллера при включении питания. Для стабилизации напряжения питания использована схема стабилизатора напряжения. Для мигания светодиода необходимо программно последовательно записывать в нулевой разряд порта P0 цифру 0 и через паузу в 1 секунду цифру 1. Этот процесс должен повторяться циклически.
Схема алгоритма.

Текст программы на языке С.
#include “AduC842.h” //подключение файла с описанием регистров AduC842.h
Time() //функция задержки на 1 секунду
{ int I; //объявляем I целого типа
TMOD=0x01; //устанавливаем режим 1 таймера Т0
for( I=1; I<32; I++) //цикл 32 раз
{
TF0=0; //обнуляем флаг переполнения
TH0=0; //обнуляем таймер
TL0=0; //
TCON=0x10; //запускаем таймер
while(!TF0); //ждем, пока не переполнится таймер Т0
}
}
main() //главная программа
{
while(1) //бесконечный цикл
{
P0 = 0; // в порт P0 записываем восьмиразрядный код 00000000
Time(); //вызываем функцию задержки с (1 сек.)
P0 = 1; //в порт P0 записываем восьмиразрядный код 00000001
Time(); //вызываем функцию задержки (1 сек.)
} //завершение цикла while
} //завершение главной функции (main)
Для создания точных временных интервалов при формировании задержек в программах обычно используют специальные таймеры, встроенные в микроконтроллер. Таймер Т0 представляет собой двоичный 16-ти разрядный счетчик на вход которого поступают импульсы с тактового генератора. Счетчик состоит из двух регистров ТH0 (старшие 8 разрядов) и TL0 (младшие 8 разрядов). Частота тактовых импульсов для AduC842 по умолчанию равна fosc =2.097152 МГц.
На рисунке 2 изображена структурная схема таймера T0.

Рисунок 2. Структурная схема таймера T0.
С каждым импульсом от генератора в счетчик добавляется 1. При переполнении счетчика флаг TF0 устанавливается в 1. Для переполнения 16-разрядного счетчика требуется 65535 импульсов. Таким образом, максимальная задержка в таймере может быть:
65535/2.097152 мГц =31250 мкс
Это время можно изменять, предварительно записывая в регистры таймера различные коды от 0 до 65535.
Для формирования более длительных задержек нужно, чтобы счетчик таймера переполнялся несколько раз. Например, для задержки в 1 секунду, необходимо, чтобы таймер переполнился
1000000/31250=32 раза.
Пример 2: Разработать устройство, состоящее из микроконтроллера и подключенного к нему светодиода и кнопки. При нажатии кнопки светодиод должен мигнуть 5 раз.

Рисунок 3. Схема устройства.
Описание устройства аналогично описанию в примере 1. В этой схеме добавлена кнопка. При нажатии кнопки на 0-й разряд порта Р2 подается уровень логического нуля, в отжатом состоянии – логической 1.

Схема алгоритма программы.
Описание схемы алгоритма:
Если Р2.0=0 (т.е. кнопка нажата) выполняется цикл от 1 до 5 и каждый из пяти раз происходит мигание светодиода, подключенного к порту Р0. Если Р2.0 не равно 0, все нижние блоки пропускаются. Все эти действия выполняются в бесконечном цикле.
Текст программы:
#include “AduC842.h” //подключение файла с описанием регистров AduC842.h
sbit P20=0xA0; //описываем переменную Р20 как бит регистра с адресом 0xA0,
//по этому адресу находится нулевой бит порта P2
Time() //функция задержки на 1 секунду
{int I; //объявляем I целого типа
TMOD=0x01; //устанавливаем режим 1 таймера Т0
for( I=1; I<32; I++) //цикл 32 раза
{
TF0=0; //обнуляем флаг переполнения
TH0=0; //обнуляем таймер
TL0=0; //
TCON=0x10; //запускаем таймер
while(!TF0); //ждем, пока не переполнится таймер Т0
}
}
main() //главная программа
{int I;
while(1) //бесконечный цикл
{
if(P20==0)
for(I=1;I<=5;I++)
{
P0 = 0; //в порт P0 записываем восьмиразрядный код 00000000
Time(); //вызываем функцию задержки с параметром 1(1 сек.)
P0 = 1; //в порт P0 записываем восьмиразрядный код 00000001
Time(); //вызываем функцию задержки с параметром 1(1 сек.)
} //завершение цикла for
} //завершение цикла while
} //завершение главной функции (main)
Пример3. Разработать устройство на основе микроконтроллера ADuC842 для измерения напряжения. Результат измерения следует передавать в персональный компьютер через последовательный порт.

Рисунок 4 Схема устройства.
Описание схемы.
Измеряемое напряжение подается на вход A4in аналогоцифрового преобразователя (АЦП) (этот вход одновременно является входом порта P1.4). Для согласования источника входного напряжения и АЦП предусмотрен повторитель напряжения на операционном усилителе. Для согласования уровней напряжений последовательного порта (UART) микроконтроллера и COM порта персонального компьютера используется микросхема ADM202, рекомендованная производителем.
Текст программы.
#include "ADuC842.h"// подключение заголовочного файла описания sfr
#include <stdio.h>// подключение функций ввода-вывода
main()
{unsigned int V;
float x;
ADCCON2=0x04;// установить 4-й канал
ADCCON1=0x8C;// включить АЦП
SCON=0x52;// 1й режим UART
T3FD=0x2D;// скорость 9600 бит в сек.
T3CON=0x83;
SCONV=1;// запуск АЦП
while(SCONV); ожидание конца преобразования
V=ADCDATAH%16;
V=V<<8;
V=V+ADCDATAL;// расчет напряжения
x=V*1.2207;
printf( " %4.0f mV", x);// печать значения напряжения
while(1);
}
Список литературы
1. Конспект лекций
2. Методические указания к лабораторным работам
3. Техническая документация на лабораторный стенд LESO1
4. Техническая документация на микропроцессор ADuC842
5. Сайт www.labfor.ru